The disclosed subject matter relates to techniques for service-oriented computing, and more particularly, but not by way of limitation, to web service architecture.
Service-oriented computing (SOC) promotes the assembly of application components into networks of services that can be loosely coupled to create flexible, dynamic business processes and agile applications that span organizations and computing platforms. Service-oriented computing has emerged as an approach to evolving tightly-coupled, component-based distributed systems into wider networks of services which can use uniform techniques to address, bind to and invoke service operations.
Service-oriented computing can provide a way to create new architectures that reflect trends toward autonomy and heterogeneity. Distributed architectures which enable the flexible and loosely-coupled processes of service-oriented computing can be referred to as service-oriented architectures (SOAs), of which software services are a primary component. The guiding characteristics of SOAs are the interoperation between loosely coupled autonomous services, the promotion of code reuse at a macro (service) level, and architectural composability.
SOAs can be composed of three primary entities—a provider, a consumer, and a registry. Providers can publish service locations in a registry; consumers can use the registry to locate services to program against and invoke. SOA implementations can specify the language used to describe services, provide the means to publish and discover them, and dictate the protocols and communication mechanisms used to interact with them. The deployment of software services on the Internet is increasingly achieved using one such set of standards collectively known as “web services.”
Web services can be based on platform-independent standards, for example those developed through the efforts of the W3C working group. These standards can define the protocols, message formats, and service description language which enable interaction between clients and services on heterogeneous computing platforms across the Internet.
The standards introduced by web services can provide the means to evolve distributed systems from tightly-coupled distributed applications into loosely-coupled systems of services. The standards can enable interoperation between heterogeneous computing platforms through the exchange of messages using well-defined interfaces. By abstracting over implementation and hosting technology, the platform-independent web service standards can provide a means of homogenizing access to existing heterogeneous services while promoting the development of new services without forcing the adoption of anyone particular implementation or hosting technology. While the web services model has been widely adopted, its promise can be undermined by at least two limitations.
First, the web service addressing model can be rigid and only suited to highly reliable networked environments with highly reliable hosts. It can fail to take into account the intrinsic dynamism and fallibility of hosts on the Internet, and applications which aim to be robust to the failure of hosts can become littered with failure-recovery code. Second, an over-burdened and under-specified Service Provider role can lead to the development of proprietary deployment systems and closed-world environments where the use of web services is only incidental. Saddled with these two drawbacks, the wide adoption of the web services model can result in a landscape of software services that is highly populated by applications which expose web service interfaces, but which are largely incompatible in terms of their required deployment systems and hosting environments.
Accordingly, there is a need for an improved web services architecture.